/*
 * AdministradorEstadisticas.h
 *
 *  Created on: 20/06/2014
 *      Author: tzalan
 */

#ifndef ADMINISTRADORESTADISTICAS_H_
#define ADMINISTRADORESTADISTICAS_H_
#define TAM 255
#define TAM1 35
#define TAM2 25
#define TAM3 20
#include "../Includes.h"
#include "../Torneo.h"

class Torneo;
class AdministradorEstadisticas: public Thread {

private:
	Torneo* torneo;
	SDL_Surface *pantalla;
	SDL_Rect dest;
	SDL_Event event;
	tm * fecha_hora;
	TTF_Font *fuente1, *fuente2, *fuente3;
	SDL_Color colorfuente, colorfuente2;
	SDL_Rect rect;
	SDL_Surface *ttext;
	SDL_Surface *background;

	int terminar, x, y;
	string cadena;

	bool refrescar;
	int SDL_WaitEventTimeout(SDL_Event *, int);
	bool iniciarVideo();
	void apply_surface(int x, int y, SDL_Surface* source, SDL_Surface* destination, SDL_Rect* clip);
	void actualizarJugadorRanking(t_jugador* jugadorPartida,long int partidaId,std::list<t_estadistica_jugador>::iterator iteradorRanking);
	SDL_Surface *load_image(const char *path);
	void actualizarPartidas();
	string getTiempoActualString();
	void mostrarRankingJugadores();
	void mostrarListadoPartidas();
	void mostrarJugadorEnPartida(t_jugador *jugador, int nroJugador);
	void imprimirTitulos(bool partidas);

public:
	AdministradorEstadisticas(bool atachado);
	virtual ~AdministradorEstadisticas();
	static void signalHandler(int signal);
	void run();
	void actualizarEstadisticas();
	void calcularCantidadClientesActivos();
	void actualizarRankingEnPartida(t_partida * partida);
	void actualizarRanking(std::list<t_partida>::iterator iteradorPartidas);
	void actualizarPosiciones();
	static bool compararJugadoresPorPromedio(const t_estadistica_jugador &lej, const t_estadistica_jugador &rej);
	/////////////////////////////////////////////////////
	bool inicializarPantalla();
	void recargarPantalla();
	void mostrarPosicion();
	void mostrarEstadisticas();
	void cargaTitulos(int);
	void close();
	//////////////////////////////////////////////////
	Torneo* getTorneo();
	void setTorneo(Torneo* torneo);
	bool presionoSalir();
};

#endif /* ADMINISTRADORESTADISTICAS_H_ */
